const eventsFunc = require('./src/eventsCodes.js').eventsFunc; // 事件处理
const dataProd = require('./src/dataProd.js').dataProd; // json数据处理
// 模版页面渲染配置文件

class tempConfig {
  constructor(props) {
    this.props = props;
    this.emitter = props._emitter;
    this.ipx = this.isIphoneX();
    this._refs = {}; // 用来存储所有的ref
  }
  // 选择展示的页面
  choiceTemp(_pageName) {
    if (!_pageName) {
      throw new Error('请传入页面名称～');
    }
    const { pageArray } = this.props;
    const newVal = pageArray.find((value, index, array) => {
      return value.name === _pageName
    })
    return this.ipx ? newVal.options[1334] : newVal.options[1624];
  }

  // 获取组件实例
  getCompByName(_name){
    return this._refs[_name]
  }

  // 是否ipx机型
  isIphoneX() {
    //判断是否是iphoneX 或者是 iphone6
    let mobileInfo = my.getSystemInfoSync();
    let ratio = 0
    if (mobileInfo.platform == "iOS") {
      ratio = mobileInfo.screenWidth / mobileInfo.screenHeight
    } else {
      ratio = mobileInfo.screenWidth / mobileInfo.screenHeight
    }
    if (0.45 < ratio && 0.48 > ratio) {
      return false
    }
    if (ratio < 750 / 1334) {
      return true
    }
    return false
  }

  // 根据name 获取json中的数据
  getDataByName(_jsonKey, _name) {
    const json = this.choiceTemp(_jsonKey);
    const func = new dataProd();
    return func.findNodeByName(JSON.parse(json).data, _name);
  }
  // 根据name 修改json中的数据
  setDataByName(_name, _newValue) {
    this._refs[_name].setJsonData(_newValue)
  }
  // dom隐藏或显示
  toggleDomStatus(_refName, _Status) {
    if (!_refName) {
      throw new Error('请传入dom的名称～');
    }
    if (!_Status || _Status !== "show" && _Status !== "hide") {
      throw new Error('请输入hide或show');
    }
    this._refs[_refName][_Status]()
  }

  // 事件处理 单双击和自定义事件
  eventClick(arr = [], id, _that) {
    eventsFunc.processEvent("singleClick", arr, id, _that)
  }
}



module.exports = exports.tempConfig = tempConfig;

